package com.niiwoo.civet.mobile.vo.response.user;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

@Setter
@Getter
@ToString
@ApiModel(description = "社保详情页查询结果")
public class SocialSecurityResponseDetailVO implements Serializable {

    @ApiModelProperty(value = "社保授权状态---0未授权；1已授权；2已验证（获取数据）；3验证失败（获取数据失败）；4已过期")
    private Byte status;

    @ApiModelProperty(value = "用户信息")
    private UserInfo userInfo;

    @ApiModelProperty(value = "每月的缴费详情，按月份从小到大排列")
    private List<MonthInsurance> insurances;

    @Setter
    @Getter
    public static class MonthInsurance implements Serializable {
        /**
         * 月份	日期格式：yyyyMM
         */
        @ApiModelProperty(value = "月份，日期格式：yyyyMM")
        private String month;

        @ApiModelProperty(value = "缴费详情，类型（如:accident）为key，社保金额对象为值；【保险记录类型（accident:工伤保险、medical:医疗保险、endowment:养老保险、unemployment:失业保险、maternity:生育保险）】")
        private Map<String, Insurance> item;
    }


    @Setter
    @Getter

    public static class UserInfo implements Serializable {
        /**
         * 姓名
         */
        @ApiModelProperty(value = "姓名")
        private String name;
        /**
         * 城市
         */
        @ApiModelProperty(value = "城市")
        private String city;
        /**
         * 身份证
         */
        @ApiModelProperty(value = "身份证")
        private String idCard;
        /**
         * 单位名称
         */
        @ApiModelProperty(value = "单位名称")
        private String companyName;
        /**
         * 手机号码
         */
        @ApiModelProperty(value = "手机号码")
        private String mobile;

        /**
         * 当前状态
         */
        @ApiModelProperty(value = "当前状态:1:正常，2:停缴")
        private String currentStatus;
        /**
         * 起缴日	日期格式：yyyy-MM-dd
         */
        @ApiModelProperty(value = "起缴日，日期格式：yyyy-MM-dd")
        private String beginDate;
        /**
         * 参加工作时间	日期格式：yyyy-MM-dd
         */
        @ApiModelProperty(value = "参加工作时间，日期格式：yyyy-MM-dd")
        private String timeToWork;

        /**
         * 最后缴纳日期	日期格式：yyyy-MM-dd
         */
        @ApiModelProperty(value = "最后缴纳日期，日期格式：yyyy-MM-dd")
        private String lastPayDate;

        /**
         * 最后缴纳基数
         */
        @ApiModelProperty(value = "最近一个月的缴费基数")
        private String baseNumber;
    }

    @Setter
    @Getter
    public static class Insurance implements Serializable {

        /**
         * 单位缴存
         */
        private String monthlyCompanyIncome;

        /**
         * 个人缴存
         */
        private String monthlyPersonalIncome;

        /**
         * 总共缴存（客户端算单位与个人的总数，会有小数精度问题）
         */
        private String monthlyTotalIncome;
    }
}
